using System;
using ns27;

namespace Triton.Game.Mapping
{
	[Attribute38("ManaCrystal")]
	public class ManaCrystal : MonoBehaviour
	{
		public enum State
		{
			READY,
			USED,
			PROPOSED,
			DESTROYED
		}

		public GameObject gem => method_3<GameObject>("gem");

		public GameObject spawnEffects => method_3<GameObject>("spawnEffects");

		public GameObject gemDestroy => method_3<GameObject>("gemDestroy");

		public GameObject tempSpawnEffects => method_3<GameObject>("tempSpawnEffects");

		public GameObject tempGemDestroy => method_3<GameObject>("tempGemDestroy");

		public string ANIM_SPAWN_EFFECTS => method_4("ANIM_SPAWN_EFFECTS");

		public string ANIM_TEMP_SPAWN_EFFECTS => method_4("ANIM_TEMP_SPAWN_EFFECTS");

		public string ANIM_MANA_GEM_BIRTH => method_4("ANIM_MANA_GEM_BIRTH");

		public string ANIM_TEMP_MANA_GEM_BIRTH => method_4("ANIM_TEMP_MANA_GEM_BIRTH");

		public string ANIM_READY_TO_USED => method_4("ANIM_READY_TO_USED");

		public string ANIM_USED_TO_READY => method_4("ANIM_USED_TO_READY");

		public string ANIM_READY_TO_PROPOSED => method_4("ANIM_READY_TO_PROPOSED");

		public string ANIM_TEMP_READY_TO_PROPOSED => method_4("ANIM_TEMP_READY_TO_PROPOSED");

		public string ANIM_PROPOSED_TO_READY => method_4("ANIM_PROPOSED_TO_READY");

		public string ANIM_TEMP_PROPOSED_TO_READY => method_4("ANIM_TEMP_PROPOSED_TO_READY");

		public string ANIM_USED_TO_PROPOSED => method_4("ANIM_USED_TO_PROPOSED");

		public string ANIM_PROPOSED_TO_USED => method_4("ANIM_PROPOSED_TO_USED");

		public bool m_isInGame => method_2<bool>("m_isInGame");

		public bool m_birthAnimationPlayed => method_2<bool>("m_birthAnimationPlayed");

		public bool m_playingAnimation => method_2<bool>("m_playingAnimation");

		public bool m_isTemp => method_2<bool>("m_isTemp");

		public Spell m_overloadOwedSpell => method_3<Spell>("m_overloadOwedSpell");

		public Spell m_overloadPaidSpell => method_3<Spell>("m_overloadPaidSpell");

		public State m_state => method_2<State>("m_state");

		public State m_visibleState => method_2<State>("m_visibleState");

		public State state => method_11<State>("get_state", Array.Empty<object>());

		public ManaCrystal(IntPtr address, string className)
			: base(address, className)
		{
		}

		public ManaCrystal(IntPtr address)
			: this(address, "ManaCrystal")
		{
		}

		public void Start()
		{
			method_8("Start");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void MarkAsNotInGame()
		{
			method_8("MarkAsNotInGame");
		}

		public void MarkAsTemp()
		{
			method_8("MarkAsTemp");
		}

		public void PlayCreateAnimation()
		{
			method_8("PlayCreateAnimation");
		}

		public void Destroy()
		{
			method_8("Destroy");
		}

		public bool IsOverloaded()
		{
			return method_11<bool>("IsOverloaded", Array.Empty<object>());
		}

		public bool IsOwedForOverload()
		{
			return method_11<bool>("IsOwedForOverload", Array.Empty<object>());
		}

		public void MarkAsOwedForOverload()
		{
			method_9("MarkAsOwedForOverload", new Class276.Enum20[0]);
		}

		public void ReclaimOverload()
		{
			method_8("ReclaimOverload");
		}

		public void PayOverload()
		{
			method_8("PayOverload");
		}

		public void UnlockOverload()
		{
			method_8("UnlockOverload");
		}

		public void PlayGemAnimation(string animName, State newVisibleState)
		{
			method_8("PlayGemAnimation", animName, newVisibleState);
		}

		public string GetTransitionAnimName(State oldState, State newState)
		{
			return method_13("GetTransitionAnimName", oldState, newState);
		}

		public void OnGemDestroyedAnimComplete(Spell spell, SpellStateType spellStateType, object userData)
		{
			method_8("OnGemDestroyedAnimComplete", spell, spellStateType, userData);
		}

		public void OnOverloadUnlockedAnimComplete(Spell spell, SpellStateType prevStateType, object userData)
		{
			method_8("OnOverloadUnlockedAnimComplete", spell, prevStateType, userData);
		}

		public void OnOverloadBirthCompletePayOverload(Spell spell, SpellStateType prevStateType, object userData)
		{
			method_8("OnOverloadBirthCompletePayOverload", spell, prevStateType, userData);
		}

		public void MarkAsOwedForOverload(bool immediatelyLockForOverload)
		{
			method_9("MarkAsOwedForOverload", new Class276.Enum20[1] { Class276.Enum20.Boolean }, immediatelyLockForOverload);
		}
	}
}
